home *** CD-ROM | disk | FTP | other *** search
- --------------------------------------------------------------------------
- Software-Info zum Konverter GFA- nach QuickBasic
- --------------------------------------------------------------------------
- Columbus Soft
- Kinzigweg 1
- 64297 Darmstadt
- Tel/Fax: 06151/596875
-
- Die Übertragung von GFA-Programmen auf den PC ist gewiß kein Thema für
- vierfarbige Hochglanzprospekte mit vollmundige Versprechungen. Das
- Programm, welches mit einem Kuß den 'GFA-Frosch' in einen 'PC-König'
- verwandelt, wird es mit Sicherheit nicht geben. Wer Enttäuschungen und
- Fehlinvestitionen vermeiden will, ist gut beraten sich zuvor genaue
- Informationen einzuholen um sich mit den Vor- und Nachteilen der
- verschiedenen Möglichkeiten vertraut zu machen.
-
- In diesem Sinne soll das vorliegende Software-Info Ihrer Orientierung
- dienen. Zunächst werden die grundsätzlichen Möglichkeiten der
- PC-Übertragung vorgestellt und dargelegt, welche Erfahrungen und
- Überlegungen zur Entwicklung des QuickBasic-Konverters geführt haben. Im
- zweiten Teil des Infos werden Sie mit den Möglichkeiten und Grenzen des
- QuickBasic-Konverters bekannt gemacht und erhalten einen detaillierten
- Einblick in die Arbeitsweise.
-
- Auf diese Weise können Sie sich ein Bild von machen und selbst entscheiden, ob
- der QuickBasic-Konverter für Sie das geeignete Hilfsmittel ist.
-
-
- ========================
- (A) Zur PC-Übertragung
- ========================
-
- Vor einigen Jahren stand an der TH Darmstadt die Aufgabe an, ein
- umfangreiches wissenschaftliches Programmpaket, welches vollständig in
- GFA-Basic geschrieben war, auf den PC zu übertragen. Auf diese Weise
- sollte es einem wesentlich größeren Kreis von Studenten und Anwendern
- zugänglich gemacht werden.
-
- Bei der Überlegung, wie das am besten zu bewerkstelligen wäre, waren die
- folgenden Eckdaten zu beachten:
- ++ Die Programme werden ständig gewartet und weiterentwickelt.
- ++ Das GFA-Basic hat sich für die Programmierung auf dem Atari bestens
- bewährt und sollte möglichst weiter verwendet werden können.
- ++ Ein Umstieg auf eine andere Sprache war jedoch nicht auszuschließen.
-
- Die PC-Version des GFA-BASIC war damals noch nicht auf dem Markt. Dafür
- wurde von dieser Firma ein C-Konverter angeboten.
-
- --------------------
- Übertragung nach C
- --------------------
- Da die Sprache C dank des eingebauten Präprozessors prädestiniert ist für
- eine parallele Entwicklung auf verschiedenen Systemen, schien der Umstieg
- auf diese Sprache zusammen mit diesem Konverter die bequemste Lösung des
- Problems zu sein.
- Leider erwies sich diese Annahme schnell als Trugschluß. In den
- Konvertierungsprodukten wurde nämlich folgende prinzipielle Problematik
- deutlich:
-
- - ein vollständig lauffähiges Konvertierungsprodukt kann nur dadurch
- erzeugt werden, daß auf eine umfangreiche C-Funktionsbibliothek
- zurückgegriffen wird. Der größte Teil der Basic-Befehle wird dann durch
- eine simulierende C-Funktion ersetzt. Die Einfachheit der Sprache C
- bleibt dabei auf der Strecke. Die Übersetzung ist schwer zu durchschauen
- und die unweigerlich auftretenden Fehler gerade für den
- Basic-Programmierer kaum aufzuspüren.
-
- - Ein Einstieg in die Sprache C ist hiermit keinesfalls zu erreichen. Kein
- C-Programmierer würde je einen derart aufgeblasenen und umständlichen
- Quelltext erzeugen. Adäquate Programme in C sehen völlig anders aus. Die
- spezifischen Vorteile der Sprache C werden durch ein konvertiertes
- Basic-Programm niemals sichtbar.
-
- Ein Beispiel für diese Problematik ist die Umwandlung der BASIC-Zeile
-
- DIM a$(20)
-
- welche in folgenden Befehl umgesetzt wird:
-
- aS_f.p.S2 = (char **)B_dim(6,&aS_f,C_HAR,(long)1,(long)20)
-
- - Abgesehen von den prinzipiellen Problemen erwies sich der Konverter
- wegen der ständigen Abstürze als praktisch unbrauchbar.
-
- Die grundsätzlichen Nachteile dieses Weges, die auch bei einem
- ausgereifterem Produkt nicht anders wären, ließen eine Fortsetzung dieser
- Versuche nicht sinnvoll erscheinen.
-
- -------------------------------
- Ein 'adäquater' C-Übersetzer?
- -------------------------------
- Die geschilderten Nachteile ließen sich mit einem Konverter beseitigen,
- welcher einen 'adäquaten' C-Quelltext erzeugt, d.h. einen C-Code, wie
- ihn ein C-Programmierer zu dem gegebenen Problem formulieren würde.
- Wegen der tiefgreifenden strukturellen Unterschiede von Basic und C
- (Variablenorganisation, Speicherverwaltung, Stringbehandlung,...)
- önnen auf diese Weise aber praktisch keine lauffähigen Programme produziert
- werden, sondern es wären noch umfangreiche manuelle Nacharbeiten notwendig.
-
- Sinnvoll ist diese Art der Konvertierung nur dann, wenn das Quellprogramm
- ein einziges Mal übertragen werden soll, um dann in C weiterentwickelt
- zu werden. Vom Arbeitsaufwand her käme es allerdings einer Neuprogrammierung
- nahe.
-
- Da ein kommerzieller Übersetzer dieser Art nicht existierte, wurde auch
- dieser Weg nicht weiter verfolgt.
-
- ----------------------
- Übertragung in BASIC
- ----------------------
- Statt dessen wurde als nächstes die Übertragungsmöglichkeit in einen der
- PC-Basic-Dialekte (Turbo, GW, Power, Quick,..) untersucht. Im Vergleich
- zur C-Konvertierung sind hierbei folgende Vorteile direkt ersichtlich:
-
- - Fast alle Programmzeilen können 1:1 übersetzt werden (d.h. einer
- Zeile im Quelltext entspricht eine Zeile im Zieltext mit identischer
- Funktion und minimalen Abweichungen in der Syntax)
- - Die wenigen Befehle, die es im Ziel-Dialekt nicht gibt, werden mit
- einfachen Basic-Prozeduren simuliert. Es gibt keine 'black boxes',
- die dem Programmierer den Durchblick erschweren.
- - Es muß keine völlig neue Sprache gelernt werden, so daß das
- Bearbeiten des übersetzten Textes keine besonderen Schwierigkeiten ergibt.
- - Beim Austesten des Konvertierungsproduktes muß auf den gewohnten
- Interpreter-Komfort nicht verzichtet werden.
-
-
- ------------------
- Welcher Dialekt?
- ------------------
- Bei der Auswahl des am meisten geeigneten Basic-Dialektes zeigte sich das
- QuickBasic von Microsoft als beste Lösung was Sprachumfang und
- Ähnlichkeit angeht. Mittlerweile ist im Lieferumfang des DOS >5.0 das
- QBasic enthalten, welches bis auf wenige Einschränkungen fast identisch
- zum QuickBasic ist. Hiermit ist ein 'kostenloser Einstieg' möglich. Als
- höherwertige (und entsprechend teurere) Alternative bietet sich das Basic
- PDS 7.1 (ebenfalls von Micrsosoft) an. Die drei Dialekte sind
- syntax-kompatibel. Der vergleichsweise hohe Preis der Profi-Version PDS
- 7.1 (ca.750DM) liegt einerseits in einer umfangreichen mitgelieferten
- Bibliothek begründet und zum andern in der wesentlichen besseren
- Speicherausnutzung, mit der sich die 640kB-Begrenzung nicht so schnell
- unangenehm bemerkbar macht.
-
- -----------------------
- Übertragung per Hand?
- -----------------------
- Ein erster Vergleich von GFA- und Quickbasic zeigt:
-
- - Eine direkte Übernahme des Quelltextes (Speichern als ASCII-Datei und
- 'Mergen') ist nicht möglich.
- - Eine Anpassung von Hand ist ebenfalls für keinen der Dialekte
- sinnvoll, da es kaum eine Zeile des GFA-Basic gibt, die nicht
- geändert werden müßte. Dies käme einer Neuprogrammierung gleich.
-
-
- ----------------------------------------
- Anforderungen an einen BASIC-Konverter
- ----------------------------------------
- Es mußte also ein Konverter entwickelt werden, der alle notwendigen Änderungen
- automatisch durchführt.
-
- - Die Übertragung muß vollautomatisch und in einem Programmlauf erfolgen.
- - Manuelle Nacharbeiten sollen nicht notwendig sein.
- - Der Benutzer muß die Übertragung seinen Bedürfnissen anpassen
- können, damit die Verwendung von Toolboxen möglich ist.
- - Spezielle PC-Probleme (Modulgrößen-Begrenzung) müssen ebenfalls
- automatisch gelöst werden.
-
- Der im weiteren vorgestellte Konverter ist unter diesen
- Gesichtspunkten entwickelt worden.
-
-
- ================================================
- (B) Der QuickBasic-Konverter von Columbus Soft
- ================================================
- Mit dem QuickBasic-Konverter sind Sie in der Lage Ihre GFA-Basic-
- Quelltexte in QuickBasic zu übertragen.
- Ganz ohne Vorarbeiten geht es natürlich nicht. Lediglich bei
- GFA-Programmen, die sich eng am Kern der BASIC-Sprache halten ist eine
- sofortige Übersetzung durchführbar. Bei allen anderen Programmen ist eine
- Vorbereitung des Quelltextes nötig. Aber: Dieses 'Präparieren' muß nur
- ein einziges Mal durchgeführt werden. Jeder weitere Übersetzungslauf
- funktioniert dann auf Anhieb. Der Umfang der Vorbereitung ist natürlich
- von der Art des Programms abhängig: Je mehr Sie systemspezifische
- Elemente und Befehle verwendet haben desto größer wird der Aufwand.
-
- Damit Sie einen genaue Vorstellung davon bekommen, was der Konverter
- leistet und was für Sie zu tun bleibt, ist im weiteren die Arbeitsweise
- detailliert erläutert.
-
- Sie beruht zum einen auf der Strukturanalyse des zu übertragenden
- Programms und damit verbundenen Änderungen und zum anderen auf
- Textmustererkennung und -ersetzungen.
-
- -------------------
- Strukturanpassung
- -------------------
- In den Bereich der Strukturumwandlung fallen u.a. folgende Änderungen:
-
- - Alle Bezeichner (Variablennamen, Prozedurnamen, Labels,...) werden
- auf Gültigkeit überprüft (Underscores, reservierte Worte,
- Doppeldeutigkeiten) und gegebenenfalls automatisch geändert.
- - Die Variablen-Postfixe werden geändert (z.B. Vertauschen von
- % und &, boolsche Variablen in Integer umwandeln,...)
- - Alle globalen Variablen werden in den Unterprogrammen deklariert, die
- LOCAL-Deklarationen dagegen entfernt.
- - Definitionen von Zeilenfunktionen werden aus Unterprogrammen in das
- Hauptprogramm verschoben.
- - Kommentare werden von den Zeilenenden abgehängt (oder auch ganz gelöscht).
- - Zahlenkonstanten werden umgewandelt.
- - Unterprogrammaufrufe mit Parametern werden umgewandelt (Der VAR-Befehl
- in den Prozedurdefinitionen des GFA-Basic existiert nicht. Statt dessen
- müssen bei jedem Aufruf die betreffenden Parameter geklammert werden).
-
- ---------------------
- Textmusterersetzung
- ---------------------
- Der Konverter besitzt einen Textmuster-Ersetzer, mit dem alle
- weiteren Änderungen vorgenommen werden können.
- Hiermit wird jeder Befehl, der in den beiden Dialekten nicht identisch
- ist, in einen äquivalenten Befehl oder Ausdruck umgewandelt.
- Die Ersetzungskommandos sind nicht fest eingebaut, sondern befinden
- sich in ASCII-Dateien, so daß sie vom Benutzer beliebig editiert und verändert
- werden können.
- Dieses offene Konzept ermöglicht zum Beispiel beliebige Toolboxen
- zu verwenden und einzubinden.
-
- ---------------------------------
- Einbinden von Ersatz-Prozeduren
- ---------------------------------
- Manche Befehle und Funktionen des GFA-Basic lassen sich durch
- QuickBasic-Prozeduren nachbilden.
- Diese können in beliebigen ASCII-Dateien stehen und werden bei Bedarf
- vom Konverter dem Übersetzten Quelltext angefügt.
-
- ------------------
- Der Präprozessor
- ------------------
- Mit den Präprozessor-Befehlen lassen sich
- unabhängig von den vorher erläuterten Änderungen
- beliebige Manipulationen vom Benutzer vornehmen. So können Programmzeilen
- oder ganze Teile eliminiert oder eingefügt werden.
- Dies ist z.B. für alle Programmteile nötig, für die in der anderen Sprache
- kein Pendant existiert. Als einfachstes Beispiel hierfür sei der
- SCREEN-Befehl
- genannt, der in GFA-Basic nicht existiert aber in QuickBasic vor allen
- Graphik-Ausgaben stehen muß.
-
- ------------------
- Weitere Aufgaben
- ------------------
- QuickBasic-Programme müssen ab einer bestimmten Größe in Module zerlegt
- werden. Auch diese Aufgabe erledigt der Konverter für Sie und erstellt
- darüber hinaus eine INCLUDE-Datei, in welcher alle globalen
- Variablen, sowie alle Prozeduren und Funktionen deklariert werden.
- Außerdem wird eine MAKE-Datei (zum gleichzeitigen Laden aller Module
- in den Interpreter) und eine Batchdatei (zum automatischen Compilieren
- und Linken der Module) angelegt.
-
- ------------------------
- Sonstige Eigenschaften
- ------------------------
- Der Konverter ist 'selbstoptimierend', so daß ein zweiter und dritter
- Übersetzungsvorgang eines Programms in wesentlich kürzerer Zeit abläuft.
-
- ----------------------------------
- Wofür der Konverter sinnvoll ist
- ----------------------------------
-
- - Für die parallele Entwicklung unter TOS und DOS. Denn dank des
- Präprozessors reicht es aus, den Quelltext ein einziges Mal zu
- präparieren. Die weitere Entwicklung kann auf dem Atari stattfinden.
- Jede neue Version wird auf Knopfdruck übersetzt. Sie verwalten also
- weiterhin nur einen einzigen Programmtext.
- - Für die einmalige Übertragung von mittleren bis großen Programmen. Denn
- selbst wenn Ihr Programm in einigen Teilen nicht kompatibel
- (automatisch übersetzbar) ist, so wird vom Konverter doch für den
- großen Rest ein syntaktisch fehlerloser Code erzeugt, der von Hand nur
- in tagelanger Tipparbeit erzeugt werden könnte. Rechnen Sie selbst aus,
- wie lange Sie für das Umschreiben benötigen würden und wieviel Sie
- somit durch den Konverter sparen.
-
- - Für den Einsteig/Umstieg nach QuickBasic (QBasic,Microsoft Basic). Denn
- das Handbuch zum Konverter führt Sie nicht nur in die Arbeitsweise des
- Programms ein sondern erläutert detailliert und anhand von Beispielen
- die Unterschiede der beiden Dialekte und was beim Umstieg zu beachten
- ist.
-
- -----------------------------------------
- Wieviel und was kann übertragen werden?
- -----------------------------------------
- Von den GFA-Befehlen und Funktionen sind etwa die Hälfte in QuickBasic
- identisch vorhanden oder durch äquivalente Ausdrücke ersetzbar. Weitere
- 25% lassen sich durch Unterprogramme ersetzen. Für 10% muß auf Toolboxen
- zurückgegriffen werden. Die restlichen sind entweder nicht sinnvoll oder
- nicht übertragbar.
-
- Das Handbuch enthält eine alphabetische Referenz aller GFA-Befehle, aus
- welcher Sie für jeden einzelnen ersehen können, ob und wie er übertragen
- werden kann. Menü-Befehle können unter Verwendung externer Toolboxen
- (nicht im Lieferumfang) realisiert werden. Ebenso Alert- und
- Fileselectboxen. Programme, in denen Resource-Dateien Verwendung finden,
- können nur dadurch übertragen werden, daß die entsprechenden Prozeduren
- zum Dialoghandling vollständig 'ausgetauscht' werden.
-
- -----------
- Preis
- -----------
- Der QuickBasic-Konverter läuft auf allen Rechnern der ST(E)/TT-Serie in
- s/w und Farbe. Sein Preis beträgt 128,-DM.
-
-